iT邦幫忙

2025 iThome 鐵人賽

DAY 14
0
Security

30 天闖關 picoCTF系列 第 14

[2025鐵人賽Day14]Dear Diary

  • 分享至 

  • xImage
  •  

這是今天的題目
https://ithelp.ithome.com.tw/upload/images/20250921/201786239F00tEeGMV.png
首先我們拿到檔案後先確認檔案型態

wget <disk_image_link>
file disk.flag.img.gz

確認好檔案型態是.gz檔後我們先提取裡面的內容

gunzip disk.flag.img.gz

之後我們先用file查看檔案訊息
https://ithelp.ithome.com.tw/upload/images/20250921/20178623OkyE98XoSF.png
結果:
這個 image是磁碟映像(disk image),採用MBR(Master Boot Record)分割表,它包含3個partition。
接著我們將它拆成一個個partition,來得之每一個partition在映像中的位置。
https://ithelp.ithome.com.tw/upload/images/20250921/20178623bkG5YF8AuF.png
至於為什麼要用 mmls?
磁碟映像可能有多個 partition
例如你的 disk.flag.img 有3個partition:
Partition 1:Linux filesystem
Partition 2:Swap
Partition 3:Linux filesystem
如果你直接用 fls 或 icat,不知道 offset,工具就無法正確解析檔案系統。這麼做是為了後續能準確地抓對起始的位置。
我們接著依序將磁碟映像中各個Partition的起始sector開始,列出該檔案系統的所有檔案和目錄。

$ fls -o 2048  disk.flag.img 
d/d 11: lost+found
r/r 13: ldlinux.sys
r/r 14: ldlinux.c32
r/r 16: config-virt
r/r 17: vmlinuz-virt
r/r 18: initramfs-virt
l/l 19: boot
r/r 21: libutil.c32
r/r 20: extlinux.conf
r/r 22: libcom32.c32
r/r 23: mboot.c32
r/r 24: menu.c32
r/r 15: System.map-virt
r/r 25: vesamenu.c32
V/V 76913:      $OrphanFiles

$ fls -o 0001140736  disk.flag.img     
d/d 32513:      home
d/d 11: lost+found
d/d 32385:      boot
d/d 64769:      etc
d/d 32386:      proc
d/d 13: dev
d/d 32387:      tmp
d/d 14: lib
d/d 32388:      var
d/d 21: usr
d/d 32393:      bin
d/d 32395:      sbin
d/d 32539:      media
d/d 203:        mnt
d/d 32543:      opt
d/d 204:        root
d/d 32544:      run
d/d 205:        srv
d/d 32545:      sys
d/d 32530:      swap
V/V 119417:     $OrphanFiles

$ fls -o 0001140736 disk.flag.img 204
r/r 1837:       .ash_history
d/d 1842:       secret-secrets               

第一條指令 → 看 Partition 1(boot 分割區)檔案

第二條指令 → 看 Partition 3(root 分割區)檔案

第三條指令 → 進入 /root 目錄,找到 secret-secrets 這個可能藏flag的目錄

這個secret-secres檔看起來有點東西,我們從這下手看看。
https://ithelp.ithome.com.tw/upload/images/20250921/20178623O9ZPfj4cbC.png
最後使用icat逐個嘗試,這邊我講一下icat功能。icat是Sleuth Kit套件中的工具,用來直接從磁碟映像中抽取指定inode的檔案內容,不需要掛載檔案系。

001f8840: 732d 6669 6c65 2e74 7874 0000 0000 0000  s-file.txt......
001f8850: 0000 0000 0000 0000 0000 0000 0000 0000  ................
001f8860: 0000 0000 0000 0000 0000 0000 0000 0000  ................
001f8870: 0000 0000 0000 0000 0000 0000 0000 0000  ................
--
001fbc40: 732d 6669 6c65 2e74 7874 0000 3507 0000  s-file.txt..5...
001fbc50: a803 1101 6f72 6967 696e 616c 2d66 696c  ....original-fil
001fbc60: 656e 616d 6500 0000 0000 0000 0000 0000  ename...........
001fbc70: 0000 0000 0000 0000 0000 0000 0000 0000  ................
--
001fdc40: 732d 6669 6c65 2e74 7874 0000 0000 0000  s-file.txt......
001fdc50: 0000 0000 0000 0000 0000 0000 0000 0000  ................
001fdc60: 0000 0000 0000 0000 3507 0000 8c03 0301  ........5.......
001fdc70: 7069 6300 0000 0000 0000 0000 0000 0000  pic.............
--
001ff440: 732d 6669 6c65 2e74 7874 0000 3507 0000  s-file.txt..5...
001ff450: a803 0301 6f43 5400 0000 0000 0000 0000  ....oCT.........
001ff460: 0000 0000 0000 0000 0000 0000 0000 0000  ................
001ff470: 0000 0000 0000 0000 0000 0000 0000 0000  ................
--
00201840: 732d 6669 6c65 2e74 7874 0000 0000 0000  s-file.txt......
00201850: 0000 0000 0000 0000 3507 0000 9c03 0301  ........5.......
00201860: 467b 3100 0000 0000 0000 0000 0000 0000  F{1.............
00201870: 0000 0000 0000 0000 0000 0000 0000 0000  ................
--
00203c40: 732d 6669 6c65 2e74 7874 0000 3507 0000  s-file.txt..5...
00203c50: a803 0301 5f35 3300 0000 0000 0000 0000  ...._53.........
00203c60: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00203c70: 0000 0000 0000 0000 0000 0000 0000 0000  ................
--
00206040: 732d 6669 6c65 2e74 7874 0000 0000 0000  s-file.txt......
00206050: 0000 0000 0000 0000 3507 0000 9c03 0301  ........5.......
00206060: 335f 6e00 0000 0000 0000 0000 0000 0000  3_n.............
00206070: 0000 0000 0000 0000 0000 0000 0000 0000  ................
--
00207840: 732d 6669 6c65 2e74 7874 0000 3507 0000  s-file.txt..5...
00207850: a803 0301 346d 3300 0000 0000 0000 0000  ....4m3.........
00207860: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00207870: 0000 0000 0000 0000 0000 0000 0000 0000  ................
--
00209c40: 732d 6669 6c65 2e74 7874 0000 0000 0000  s-file.txt......
00209c50: 0000 0000 0000 0000 3507 0000 9c03 0301  ........5.......
00209c60: 355f 3800 0000 0000 0000 0000 0000 0000  5_8.............
00209c70: 0000 0000 0000 0000 0000 0000 0000 0000  ................
--
0020b440: 732d 6669 6c65 2e74 7874 0000 3507 0000  s-file.txt..5...
0020b450: a803 0301 3064 3200 0000 0000 0000 0000  ....0d2.........
0020b460: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0020b470: 0000 0000 0000 0000 0000 0000 0000 0000  ................
--
0020d840: 732d 6669 6c65 2e74 7874 0000 0000 0000  s-file.txt......
0020d850: 0000 0000 0000 0000 3507 0000 9c03 0301  ........5.......
0020d860: 3462 3300 0000 0000 0000 0000 0000 0000  4b3.............
0020d870: 0000 0000 0000 0000 0000 0000 0000 0000  ................
--
0020fc40: 732d 6669 6c65 2e74 7874 0000 3507 0000  s-file.txt..5...
0020fc50: a803 0201 307d 0000 0000 0000 0000 0000  ....0}..........
0020fc60: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0020fc70: 0000 0000 0000 0000 0000 0000 0000 0000  ................
--
00211440: 732d 6669 6c65 2e74 7874 0000 0000 0000  s-file.txt......
00211450: 0000 0000 0000 0000 3507 0000 9c03 1301  ........5.......
00211460: 6974 732d 616c 6c2d 696e 2d74 6865 2d6e  its-all-in-the-n
00211470: 616d 6500 0000 0000 0000 0000 0000 0000  ame.............

將每個部份結尾結合即可得到答案。
最後我總結下解題流程:
mmls → 找 partition offset

fls → 列出檔案與目錄,搭配 inode 可精準定位

icat → 直接抽取檔案內容

xxd / strings / grep → 協助檢視或過濾有用資訊

逐層探索 → 從 partition → /root → secret-secrets → 檔案 → flag

心得:這是我第一篇嘗試解Medium的題目,過程中遇到了許多障礙。於是我在解題時不時需要在網上學習知識及工具,才一步步將題目逐個問題解決。這也讓我意識到資安知識的廣闊,往後還須學習更多的東西。


上一篇
[2025鐵人賽Day13]網頁解碼
下一篇
[2025鐵人賽Day15]重複解碼
系列文
30 天闖關 picoCTF23
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言